iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0

目前我們知道Process在Access memory時會先去找到page,才去找到frame,但其實中間還會經過一個層級,叫做segment,整體的流程會變成這樣

CPU -> segmentation -> paging -> physical

logical address space : segmentation
physical address space : paging

segmentation的觀念與paging非常的相似,不一樣的地方是採用了variable_size去切割記憶體位置,因此每一個segment的大小可以是不一樣的,並且其切割的方法是透過使用者的角度去切割,根據code裡面memory content的內容切成好幾個segment。

但因為大小是不固定的,如果直接mapping到physical address會有很大的external fragmentation,因此作業系統會在segmentation之後去做paging。整個流程如下:

  1. Process Memory Content先丟到一個假想的空間-Linear Address space,在Linear address space上面會有許多segment,因為是假想的空間,不用去管會不會有fragmentation
  2. 在Linear address space上面在去做paging,把segment切成一個一個小塊的之後對應到physical address裡面。

這樣子的好處是memory的使用可以變得非常高,不會有太多的Fragmentation。

Segmentation Table

同樣會一個segementation table去做mapping到linear address space上面,segmentation table和 page table的概念非常的相似,原先的page number和page offset的概念也相同於segment number + segment offset,但因為沒有大小上的限制,bits的數量是沒有受限的。

segmentation可以指到任何位置、長度也是任意的,Program也是在Segment上面去寫。


上一篇
Day 25 - Address Translation Implement
下一篇
Day 27 - File System
系列文
非本科系也能懂和該懂得作業系統30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言